$(function(){

	var uploader = new plupload.Uploader({
		runtimes : 'html5,flash,silverlight,html4',
		browse_button : 'openFiles', //触发文件选择对话框的按钮，为那个元素id
		container: document.getElementById('container'), 
		url : 'http://localhost:8080/plupload/upload', //服务器端的上传页面地址
		flash_swf_url : plupConn.js.swf, //swf文件，当需要使用swf方式进行上传时需要配置该参数
		silverlight_xap_url : plupConn.js.xap, //silverlight文件，当需要使用silverlight方式进行上传时需要配置该参数
		 
		filters : {
			max_file_size : '1000mb',
			mime_types: [
				{title : "Image files", extensions : "jpg,gif,png"},
				{title : "Zip files", extensions : "zip,rar"},
				{title : "Zip files", extensions : "*"}
			]
		},
		init : {},
		refresh : function(){
			plupload.refresh();
		}
	});

	uploader.init({
		PostInit : function(){
			$("#FileList").html("");
			$("#start_upload").click(function(){
				uploader.start();
				return false;
			});
			
		}
	});

	console.info(uploader);
	//绑定各种事件，并在事件监听函数中做你想做的事
	uploader.bind('FilesAdded',function(up,files){
								
		plupload.each(files, function(file) {								
			var html_object = $("#FileList");		
			var newHTML = "<div class=\"imagesList\" id=\"file-\"" + file.id + "\">"
						+ "<div class=\"btn-file-del\"><i class=\"ace-icon fa fa-trash-o fa-1x icon-only\"></i></div>"
						+ "<div class=\"imagesBox\">"
							+ "<img id=\"images-file-uuid-"+file.id+"\"/>"
							+ "<div class=\"upload_state\"><i class=\"ace-icon fa fa-exclamation-circle\"></i></div>"
						+ "</div>"
						+ "<div class=\"title\" title=\""+file.name+"\">"+file.name+"</div>"
						+ "</div>"
						
			
			uploader.previewImage(file, function (imgsrc) {
				$('#images-file-uuid-' + file.id).attr("src",imgsrc);
			})
			
			
			
			/*
			var newHTML = "<div id=\""+file.id+"\" class=\"uploadbox-line row\">"
					+ "<div class=\"background-per\">"
						+ "<div style=\"width:0%\" class=\"progress-bar progress-bar-warning\"></div>"
					+ "</div>"
					+ "<div class=\"col-sm-6\">"+file.name+"</div>"
					+ "<div class=\"col-sm-4\">"+plupload.formatSize(file.size)+"</div>"
					+ "<div class=\"col-sm-2 b\">准备就绪</div>"
					+ "</div>";

			*/
			/*
			var newHTML = "<tr id=\""+file.id+"\" class=\"uploadbox-line\">"
					+ "<div class=\"background-per\"></div>"
					+ "<td style=\"width:60%;\">"+file.name+"</td>"
					+ "<td style=\"width:30%;\">"+plupload.formatSize(file.size)+"</td>"
					+ "<td class=\"b\"  style=\"width:10%;\">准备就绪</td>"
					+ "</tr>";
			*/
			
			$(uploader.settings.browse_button).before(newHTML);
			//html_object.append(newHTML);
		});
		
	});
	
	uploader.previewImage = function(file, callback){
		if (!file || !/image\//.test(file.type)) return; //确保文件是图片
        if (file.type == 'image/gif') {//gif使用FileReader进行预览,因为mOxie.Image只支持jpg和png
            var fr = new mOxie.FileReader();
            fr.onload = function () {
                callback(fr.result);
                fr.destroy();
                fr = null;
            }
            fr.readAsDataURL(file.getSource());
        } else {
            var preloader = new mOxie.Image();
            preloader.onload = function () {
                preloader.downsize(300, 300);//先压缩一下要预览的图片,宽300，高300
                var imgsrc = preloader.type == 'image/jpeg' ? preloader.getAsDataURL('image/jpeg', 80) : preloader.getAsDataURL(); //得到图片src,实质为一个base64编码的数据
                callback && callback(imgsrc); //callback传入的参数为预览图片的url
                preloader.destroy();
                preloader = null;
            };
            preloader.load(file.getSource());
        }
	}
	//预览图片
	 function previewImage(file, callback) {//file为plupload事件监听函数参数中的file对象,callback为预览图片准备完成的回调函数 
        if (!file || !/image\//.test(file.type)) return; //确保文件是图片
        if (file.type == 'image/gif') {//gif使用FileReader进行预览,因为mOxie.Image只支持jpg和png
            var fr = new mOxie.FileReader();
            fr.onload = function () {
                callback(fr.result);
                fr.destroy();
                fr = null;
            }
            fr.readAsDataURL(file.getSource());
        } else {
            var preloader = new mOxie.Image();
            preloader.onload = function () {
                preloader.downsize(300, 300);//先压缩一下要预览的图片,宽300，高300
                var imgsrc = preloader.type == 'image/jpeg' ? preloader.getAsDataURL('image/jpeg', 80) : preloader.getAsDataURL(); //得到图片src,实质为一个base64编码的数据
                callback && callback(imgsrc); //callback传入的参数为预览图片的url
                preloader.destroy();
                preloader = null;
            };
            preloader.load(file.getSource());
        }
    }
	//进度条
	uploader.bind('UploadProgress',function(up,file){
		$("#"+file.id).find(".b").html(file.percent+" %");
		$("#"+file.id).find(".background-per .progress-bar").css({"width" : file.percent +"%"});
	});

	//错误
	uploader.bind('Error',function(up,err){
		$("#console").append("\nError #" + err.code + ": " + err.message);
	});

	//监听事件
	uploader.bind('Refresh',function(up){
		//functionttt("发生刷新事件...");
	});

	//上传队列发生改变
	uploader.bind('StateChanged',function(up){
		functionttt("上传队列发生改变...总数["+up.files.length+"]");
		//layer.msg('上传队列发生改变...',{time:2000},function(){});
	});

	//队列某文件开始上传
	uploader.bind('UploadFile',function(up,file){
		layer.msg("文件 ["+file.name+"] 开始上传...",{time:1000});
	});

	//当队列中的某一个文件正要开始上传前触发
	uploader.bind('BeforeUpload',function(up,file){
		//functionttt("文件 ["+file.name+"] 正在准备上传...");
	});

	//上传队列发生变化后触发，即上传队列新增了文件或移除了文件
	uploader.bind('QueueChanged',function(up){
		var fileSizeCount = 0;
		try{
			for(var i=0;i<up.files.length;i++){
				fileSizeCount += up.files[i].size;
			}
		}catch(e){
			layer.msg(' 文件大小计算错误...',{time:1000});
		}
		$("#file_state").html("当前共选择 "+up.files.length+" 个文件，共计 "+plupload.formatSize(fileSizeCount));

	});

	//当队列中的某一个文件上传完成后触发 
	uploader.bind('FileUploaded',function(up){
		//layer.msg('一个文件上传完成...',{time:2000},function(){});
	});

	//上传队列中所有文件都上传完成后触发 
	uploader.bind('UploadComplete',function(up){
		console.info(up.files);
		if(up.files.length < 1){
			layer.msg('请选择文件后再进行上传...',{time:1000});
		}else{
			var len = up.files.length -1;
			for(var i=up.files.length-1;i>-1;i--){
				if(up.files[i].status==5){
					up.files.splice(i,1);
				}else{
					console.info(up.files[i].name+"状态异常...");
					up.files[i].status=1;
				}
			}
			layer.msg(up.files.length+' 个文件上传完成...',{time:1000});
		}
		
		console.info(up.files);
		uploader.Refresh;
	});


	//最后给"开始上传"按钮注册事件
	document.getElementById('start_upload').onclick = function(){
		uploader.start();
		//uploader.start(); //调用实例对象的start()方法开始上传文件，当然你也可以在其他地方调用该方法
	}
	
	
	function functionttt(o){
		console.info(o);
	}
	
});


